//
//  HHTaskModel.swift
//  testTaskQueue
//
//  Created by kingdee on 2021/2/7.
//

import Foundation


// 任务模型
@objcMembers class HHTaskModel: NSObject {
    
    // 重试模型
    struct RetryModel {
        var retryMaxCount: Int = 3
        var retryIndex: Int = 0
        var retryTimeStrategy: [Int] = [0]
        var retryAtOnce: Bool = false
        // 重试时间策略计时
        var timerCount: Int = 0
    }
    
    // 任务执行状态
    struct RunState {
        // 准备就绪待执行
        var isReady: Bool = false
        // 取消
        var isCancel: Bool = false
        // 本次执行完毕
        var isOnceFinsh: Bool = false
        // 是否成功，任务结束时告知
        var isSuccess: Bool = false
        // 是否正在运行中
        var isRuning: Bool = false
    }
    
    // 任务唯一标识
    var identifier: String = ""
    // 待执行任务
    var taskBlock: TaskBlock
    // 超出重试次数 回调
    var overRetryBlock: TaskEndBlock?
    var retryM = RetryModel()
    var state = RunState()
    // 是否保证成功
    var mustSuccess: Bool = false
    
    init(task: @escaping TaskBlock, overRetry: TaskEndBlock?) {
        taskBlock = task
        overRetryBlock = overRetry
        super.init()
    }
}
